package com.zfcer.chapter02;

/**
 * @Classname Array
 * @Description 数据结构
 * @Created by zfcer
 * @Date 2022/4/16 10:48
 */
public class Array {
    private final static int SIZE = 100;
    private int[] arr = null;
    private int length = 0;

    /**
     * 数据初始化
     */
    public void init(){
        arr = new int[SIZE];
        length = 0;
    }

    /**idx
     * 指定位置添加元素
     * @param idx
     * @param value
     * @return true：添加成功； false：添加失败
     */
    public boolean add(int idx, int value){
        if(length <= 0 || idx < 0 || idx >= length) return false;
        for(int i = length-1; i>idx; i--){
            arr[i] = arr[i-1];
        }
        arr[idx] = value;
        length++;
        return true;
    }

    /**
     * 删除指定位置元素
     * @param idx
     * @return true：添加成功； false：添加失败
     */
    public boolean remove(int idx){
        if(length <= 0 || idx < 0 || idx >= length) return false;
        for(int i = idx; i<length-1; i++){
            arr[i] = arr[i+1];
        }
        arr[length - 1] = 0;
        length--;
        return true;
    }

    /**
     * 修改指定位置元素
     * @param idx
     * @param value
     * @return true：添加成功； false：添加失败
     */
    public boolean update(int idx, int value){
        if(length <= 0 || idx < 0 || idx >= length) return false;
        arr[idx] = value;
        return true;
    }

    /**
     * 查找指定位置元素
     * @param idx
     * @return true：添加成功； false：添加失败
     */
    public int select(int idx){
        if(length <= 0 || idx < 0 || idx >= length) return 0;
        return arr[idx];
    }
}
